#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行，
# 第2行注释表示.py文件本身使用标准UTF-8编码：
print('#############使用@property#############')


class Student(object):
    @property  # 第一步：将方法名设置为属性名
    def getScore(self):
        return self._score

    @getScore.setter  # 第二步：获取第一步中的属性名
    def setScore(self, score):
        if 100 >= score >= 0:
            self._score = score
        else:
            raise TypeError("bad score!")


wangyk = Student()
wangyk.setScore = 12
print(wangyk.getScore)
print('#############Python内置的@property装饰器就是负责把一个方法变成属性调用的：#############')


# 请利用@property给一个Screen对象加上width和height属性，以及一个只读属性resolution
class Screen(object):
    @property  # 使用实例.width即可访问属性
    def width(self):
        return self._width

    @width.setter  # 使用.setter可以设置属性值
    def width(self, width):
        self._width = width

    @property  # 使用实例.width即可访问属性
    def height(self):
        return self._height

    @height.setter  # 使用.setter可以设置属性值
    def height(self, height):
        self._height = height

    @property
    def resolution(self):
        return self._width * self._height

    pass


s = Screen()
s.width = 1024
s.height = 768
print('resolution =', s.resolution)
if s.resolution == 786432:
    print('测试通过!')
else:
    print('测试失败!')
